squid反向代理

        反向代理的配置过程和正向代理没有什么太大区别,唯一的区别是配置文件中一个地方需要改动一下,需要把

1
[root@192 ~]# vim /etc/squid/squid.conf
1
http_port 3128

        改为

1
http_port 80 accel vhost vport

        然后在增加要代理的后端真实服务器信息:

1
2
3
4
cache_peer 182.140.167.44 parent 80 0 originserver name=a
cache_peer 180.97.33.108 parent 80 0 originserver name=b
cache_peer_domain a www.qq.com
cache_peer_domain b www.baidu.com

        因为之前没有配置网站信息,所以用qq.com和 baidu.com 来做例子。其中 cache_peer 为配置后端的服务器 IP 以及端口,name 后边为要配置的域名,这里和后面的 cache_peer_domain 相对应。实际的应用中,ip 大多为内外 ip ,而域名也许会有多个,如果是 squid 要代理一台 web 上的所有域名,那么就要写成这样:

1
cache_peer 192.168.10.111 80 0 originserver

        后面连 cache_peer_domain 也省了。

        反向代理主要用于缓存静态项,因为诸多静态项目尤其是图片、流媒体等比较耗费宽带,如果网络资源本来就慢,再去访问大流量的的图片、流媒体那更慢了,所以如果配置一个 squid 反向代理,让客户直接访问这个 squid ,而这些静态项已经被缓存在了 squid 上,这样就大大加快了访问速度。CDN 的设计原理就是这样的思路。

        因为修改了配置文件,所以需要重启一下 squid :

1
2
3
4
[root@192 ~]# /etc/init.d/squid restart
[root@192 ~]# curl -xlocalhost:80 http://www.baidu.com/ -I
[root@192 ~]# curl -xlocalhost:80 http://www.qq.com/ -I
[root@192 ~]# curl -xlocalhost:80 http://www.sina.com/ -I

        baidu.com 和 qq.com 都能正常访问,然而 sina.com 访问 503 了,这是因为并没有加 sina.com 的相关配置。

        关于 squid ,还有一些知识点是需要了解的:

  • -d:将指定调试等级的信息发送到标准错误设备;
  • -f:使用指定的配置文件。而不使用默认配置文件;
  • -k:向squid服务器发送指令;
  • -s:启用syslog日志;
  • -z:创建缓存目录;
  • -C:不捕获致命信号;
  • -D:不进行DNS参数测试;
  • -N:以非守护进程模式运行;
  • -X:强制进入完全调试模式。

        上面把 squid 命令所用到的选项全部打印出来了,但最常用的除了 squid -k check 外,还有一个就是 squid -k reconfigure 它们两都可以简写:

1
2
squid -kche
squid -krec

        其中第二条命令表示重新加载配置文件,如果更改了配置文件后,不需要重启 squid 服务,直接使用该命令重新加载配置即可。